/*
 * 描          述:  <描述>
 * 修  改   人:  PengQingyang
 * 修改时间:  2022年4月22日
 * <修改描述:>
 */
package com.tx.component.social.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.tx.component.social.SocialLoginPlugin;
import com.tx.component.social.model.SocialAccountType;

/**
 * 第三方登陆插件业务层<br/>
 * <功能详细描述>
 * 
 * @author  PengQingyang
 * @version  [版本号, 2022年4月22日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public interface SocialLoginPluginService {
    
    /**
     * 获取启用的第三方登陆插件清单<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return List<SocialLoginPlugin<?>> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    List<SocialLoginPlugin<?>> getSocialLoginPluginList();
    
    /**
     * 获取启动的第三方登陆插件的id的集合<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return Set<String> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    Set<String> getSocialLoginPluginIds();
    
    /**
     * 获取第三方账户类型编码集合<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return Set<String> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    List<SocialAccountType> getSocialAccountTypes();
    
    /**
     * 获取第三方账户类型编码集合<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return Set<String> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    Set<String> getSocialAccountTypeCodes();
    
    /**
     * 获取类型编码2插件的映射<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return Map<String,SocialLoginPlugin<?>> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    Map<String, SocialLoginPlugin<?>> getTypeCode2PluginMap();
}
